技術問答
技術文章
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2025 iThome 鐵人賽
DAY
3
0
自我挑戰組
安豬複習
系列 第
3
篇
#02
17th鐵人賽
hcalan
2025-09-17 23:38:30
118 瀏覽
分享至
Android 系統架構總覽:Linux Kernel、HAL、Native libraries、Framework、Applications
Android 系統層級
Android 系統大致分為 五個主要層級:
Linux Kernel (核心層)
Hardware Abstraction Layer (HAL, 硬體抽象層)
Native Libraries & Android Runtime (本地函式庫與執行環境)
Application Framework (應用框架層)
Applications (應用程式層)
圖這邊有
Link
Linux Kernel (核心層)
基於 Linux 核心,版本通常由 Google 維護
提供 記憶體管理、程序管理、驅動程式 (Driver)、網路堆疊
Android 特有的模組:
Binder IPC Driver(跨進程通訊)
wakelocks(電源管理)
ASHMEM(共享記憶體)
Hardware Abstraction Layer (HAL)
介於 硬體驅動 與 Framework 之間的中介層
提供 統一 API,避免 Framework 直接依賴硬體實作
例如:
Camera HAL(攝影機功能)
Sensor HAL(加速度計、陀螺儀)
Audio HAL(音訊輸入/輸出)
Native Libraries & Android Runtime (ART)
Native Libraries
SQLite(資料庫)
OpenGL ES(圖形渲染)
WebKit(瀏覽器引擎,現今已改為 Chromium-based WebView)
Media Framework(音訊/影片編解碼)
Android Runtime (ART)
取代舊的 Dalvik VM
支援 Ahead-of-Time (AOT) 與 Just-in-Time (JIT) 編譯
提供垃圾回收 (GC) 機制
Application Framework (應用框架層)
為應用程式提供 高階 API
主要系統服務由 SystemServer 啟動並運行:
ActivityManagerService (AMS):管理應用與生命週期
WindowManagerService (WMS):視窗與 UI 管理
PackageManagerService (PMS):APK 安裝與權限檢查
ContentProvider、LocationManager、NotificationManager...
Applications (應用程式層)
使用 Java/Kotlin 撰寫
利用 Application Framework 提供的 API
分為:
系統應用(設定、聯絡人、電話、相機)
第三方應用(LINE、Facebook、遊戲 App 等)
Questions
為什麼需要 HAL, Android 卻不讓 Framework 直接呼叫硬體驅動?
Binder IPC 在 Android 系統中的關鍵角色是什麼?
ART 的 AOT + JIT 混合模式相比傳統 JVM 有什麼優勢?
留言
追蹤
檢舉
上一篇
#01
下一篇
#03
系列文
安豬複習
共
31
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
27
#26
28
#27
29
#28
30
#29
31
#30
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19831
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
誰能證明AI是一場公司的大災難
延續誰能證明ai是場災難
鼎新ERP /SMART 專案成本分析..
Connect-AzureAD 的 powershell 指令
Debian 13 安裝 bind9 後找不到範例檔
MATABASE 多期比較問題請教
在這過快的年代,誰還有辦法去用手寫而不是機器鍵盤敲出全部的程式碼?別再跟我AI,希望能有手寫程式碼的真正執行人告訴我為何
熱門回答
誰能證明AI是一場公司的大災難
鼎新ERP /SMART 專案成本分析..
Connect-AzureAD 的 powershell 指令
Debian 13 安裝 bind9 後找不到範例檔
在這過快的年代,誰還有辦法去用手寫而不是機器鍵盤敲出全部的程式碼?別再跟我AI,希望能有手寫程式碼的真正執行人告訴我為何
熱門文章
好想跟 Discord 聊天就把專案寫好 : Claude Code Channels
用 PowerShell 安裝 Claude Code:從 Git、PATH 到 WSL 一次排好(Windows 實測)
AI網管課 - 怎麼建置10人網路 (概念篇)
如何設計自己的遊戲開發同事
突破API請求限制:我們如何用WebSocket打造低延遲的美股盯盤神器?
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}